// 入口函数
$(function () {
    // 需求1：初始化文章分类列表
    // 因为添加，修改，删除后都要重新渲染页面，所以封装成函数
    // 调用函数
    initArtCateList()
    // 封装
    function initArtCateList() {
        // 发送ajax
        let layer = layui.layer
        axios({
            url:'/my/article/cates',
            method:'get',
        }).then(res=>{
            //成功回调
            if(res.data.status !==0){
                return layer.msg(res.data.message)
            }
            // 成功后渲染
            let arr = []
            // 遍历返回的数据
            res.data.data.forEach(function (ele) {
                arr.push(
                    ` <tr>
                          <td>${ele.Id}</td>
                          <td>${ele.name}</td>
                          <td>${ele.alias}</td>
                        <td>
                             <button data-id="${ ele.Id}" class=" btn-edit layui-btn layui-btn-xs" >编辑</button>
                             <button data-id="${ ele.Id}" class=" del-edit layui-btn layui-btn-xs layui-btn-danger">删除</button>
                        </td>
                </tr>`
                )
            })
            // 循环之外，尽心赋值
            $('tbody').empty().html(arr.join(''))
        });     
    }
   
    // 需求2：点击按钮，弹出添加类别对话框
    let indexAdd = 0
    $('#addbtn').on('click',function(){
        indexAdd = layer.open({
            type:1,
            title:'添加文章类别',
            area: ['500px','260px'],
            // 将来，content里面要放form表单，所以放到最末尾
            content:
                `<form id="addForm" class="layui-form" action="">
                    <div class="layui-form-item">
                        <label class="layui-form-label">分类名称</label>
                        <div class="layui-input-block">
                          <input type="text" name="name" required  lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">分类别名</label>
                        <div class="layui-input-block">
                          <input type="text" name="alias" required  lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-input-block">
                        <button class="layui-btn" lay-submit lay-filter="formDemo">确认添加</button>
                        <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                        </div>
                    </div>
                </form>`
        })
    })

    // 需求3：添加文章分类 - 后添加的动态元素，需要使用事件委托
    $('body').on('submit', '#addForm',function(e){
        e.preventDefault()
        // 添加分类
        axios({
            url:'/my/article/addcates',
            method:'post',
            data: $(this).serialize()
        }).then(res=>{
            //成功回调
            if(res.data.status !==0){
                return layer.msg(res.data.message)
            }
            // 成功：提示，初始化文章分类
            layer.msg('恭喜您，添加文章类别成功!')
            initArtCateList()
            // 关闭对话框
            layer.close(indexAdd)
        });
    })
    
    // 需求4:修改分类弹出层
    let indexEdit = 0
    $('tbody').on('click', '.btn-edit',function(){
        // 点击编辑按钮做两件事 1.弹出层
        indexEdit = layer.open({
            type:1,
            title:'修改文章类别',
            area: ['500px','260px'],
            // 将来，content里面要放form表单，所以放到最末尾
            content:
                `<form id="editForm" class="layui-form" lay-filter="editForm">
                    <!--隐藏域  填充Id值，将来修改数据的时候使用-->
                    <input type="hidden" name="Id">
                    <div class="layui-form-item">
                        <label class="layui-form-label">分类名称</label>
                        <div class="layui-input-block">
                          <input type="text" name="name" required  lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">分类别名</label>
                        <div class="layui-input-block">
                          <input type="text" name="alias" required  lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-input-block">
                        <button class="layui-btn" lay-submit lay-filter="formDemo">确认修改</button>
                        <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                        </div>
                    </div>
                </form>`
        })
        // 点击编辑按钮做两件事 2.赋值
        // (获取数据，和渲染数据，要写到.btn-edit的点击事件里面)
        let id = $(this).attr('data-id')
        // 发送ajax
        axios({
            url:'/my/article/cates/' + id,
            method:'get',
        }).then(res=>{
            //成功回调
            // console.log(res)
            if(res.data.status !==0){
                return layer.msg(res.data.message)
            }
            // 成功后渲染：layui.form.val()
            layui.form.val('editForm',res.data.data)
        });
    })

    // 需求5：修改文章分类
    $('body').on('submit', '#editForm',function(e){
        e.preventDefault()
        // 修改分类
        axios({
            url:'/my/article/updatecate',
            method:'post',
            data: $(this).serialize()
        }).then(res=>{
            //成功回调
            // console.log(res)
            if(res.data.status !==0){
                return layer.msg(res.data.message)
            }
            // 成功：提示，初始化文章分类
            layer.msg('恭喜您，修改文章类别成功!')
            initArtCateList()
            // 关闭对话框
            layer.close(indexEdit)
        });
    })

    // 需求6：删除
    $('tbody').on('click','.del-edit', function(){
    // 获取自定义属性
    let id = $(this).attr('data-id')
    // 发送ajax
    axios({
        url:'/my/article/deletecate/' + id,
    }).then(res=>{
        //成功回调
        if(res.data.status !==0) {
            return layer.msg(res.data.message)
        }
        // 成功提示：初始化文章分类列表
        layer.msg('恭喜您，删除文章类别成功!')
        initArtCateList()
    });
    // 关闭询问框
    layer.close(index)
    })
})